package com.ruoyi.project.system.mapper;

import com.ruoyi.project.system.domain.SystemEntity;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 系统Mapper接口（修改：支持多处方/多建议查询）
 */
public interface SystemMapper {
    /**
     * 1. 根据患者身份标识号和处理状态查询预约记录（res_table）
     * （一个患者可能有多个预约，这里也改为List，避免后续报错）
     */
    List<SystemEntity> selectReservationByIdentityAndStatus(
            @Param("patientIdentityNumber") String patientIdentityNumber,
            @Param("processStatus") Integer processStatus);
            
    /**
     * 1.1 根据患者身份标识号和多个处理状态查询预约记录（res_table）
     * （支持查询多种状态的预约记录）
     */
    List<SystemEntity> selectReservationByIdentityAndStatusIn(
            @Param("patientIdentityNumber") String patientIdentityNumber,
            @Param("processStatuses") List<Integer> processStatuses);

    /**
     * 2. 根据科室ID查询科室信息（department_list）
     * （科室ID唯一，返回单个实体）
     */
    SystemEntity selectDepartmentById(@Param("departmentId") String departmentId);

    /**
     * 3. 根据预约ID查询处方信息（prescription）
     * （修改：返回List，支持一个预约多条处方）
     */
    List<SystemEntity> selectPrescriptionByReservationId(@Param("reservationId") String reservationId);

    /**
     * 4. 根据预约ID查询个性化建议（per_suggest_list）
     * （修改：返回List，支持一个预约多条建议）
     */
    List<SystemEntity> selectSuggestionByReservationId(@Param("reservationId") String reservationId);

    /**
     * 5. 根据预约ID查询个人药品清单（per_med_list）
     * （保持List，支持多药品）
     */
    List<SystemEntity> selectPersonalMedicineByReservationId(@Param("reservationId") String reservationId);

    /**
     * 6. 根据药品ID查询药品信息（medicine_table）
     * （药品ID唯一，返回单个实体）
     */
    SystemEntity selectMedicineById(@Param("medicineId") String medicineId);
}